package com.xinggq.pay.service.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付订单实体
 * @author xinggq
 * @since 2025/9/16
 */
@Data
@TableName("pay_order")
public class PayOrderEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 平台订单号
     */
    @TableField("trade_no")
    private String tradeNo;

    /**
     * 商户订单号
     */
    @TableField("merchant_order_no")
    private String merchantOrderNo;

    /**
     * 应用ID
     */
    @TableField("app_id")
    private Long appId;

    /**
     * 支付渠道类型
     */
    @TableField("channel_type")
    private String channelType;

    /**
     * 渠道订单号
     */
    @TableField("channel_trade_no")
    private String channelTradeNo;

    /**
     * 支付方式(NATIVE/JSAPI/APP等)
     */
    @TableField("pay_way")
    private String payWay;

    /**
     * 交易类型(PAY/REFUND)
     */
    @TableField("trade_type")
    private String tradeType;

    /**
     * 原商户支付订单号(仅退款订单使用，用于关联原支付订单)
     */
    @TableField("original_merchant_order_no")
    private String originalMerchantOrderNo;

    /**
     * 订单金额
     */
    @TableField("amount")
    private BigDecimal amount;

    /**
     * 订单标题
     */
    @TableField("subject")
    private String subject;

    /**
     * 支付或退款完成时间
     */
    @TableField("complete_time")
    private LocalDateTime completeTime;

    /**
     * 支付状态（0未完成，1已完成）
     */
    @TableField("pay_state")
    private Integer payState;

}